const local: App.I18n.Schema = {
  system: {
    title: 'DD Admin',
    updateTitle: 'System Version Update Notification',
    updateContent: 'A new version of the system has been detected. Do you want to refresh the page immediately?',
    updateConfirm: 'Refresh immediately',
    updateCancel: 'Later'
  },
  common: {
    keywords: 'Keywords',
    action: 'Action',
    detail: 'Detail',
    look: 'Look',
    null: 'Null',
    all: 'All',
    add: 'Add',
    new: 'New',
    more: 'More',
    addSuccess: 'Add Success',
    operaFailure: 'Operation Failure',
    backToHome: 'Back to home',
    batchDelete: 'Batch Delete',
    cancel: 'Cancel',
    close: 'Close',
    check: 'Check',
    expandColumn: 'Expand Column',
    columnSetting: 'Column Setting',
    config: 'Config',
    confirm: 'Confirm',
    delete: 'Delete',
    deleteSuccess: 'Delete Success',
    confirmDelete: 'Are you sure you want to delete?',
    edit: 'Edit',
    warning: 'Warning',
    notice: 'Notice',
    error: 'Error',
    success: 'Success',
    fail: 'Fail',
    test: 'Test',
    index: 'Index',
    keywordSearch: 'Please enter keyword',
    logout: 'Logout',
    logoutConfirm: 'Are you sure you want to log out?',
    loginExpiration: 'Login has expired, please login again！',
    lookForward: 'Coming soon',
    modify: 'Modify',
    modifySuccess: 'Modify Success',
    noData: 'No Data',
    operate: 'Operate',
    pleaseCheckValue: 'Please check whether the value is valid',
    refresh: 'Refresh',
    reset: 'Reset',
    search: 'Search',
    switch: 'Switch',
    tip: 'Tip',
    trigger: 'Trigger',
    update: 'Update',
    updateSuccess: 'Update Success',
    userCenter: 'User Center',
    yesOrNo: {
      yes: 'Yes',
      no: 'No'
    },
    checkAllOrUncheckAll: {
      checkAllOrUncheckAll: 'Check All/Check None:',
      checkAll: 'Check All',
      uncheckAll: 'Check None'
    },
    expandAllOrCollapsedAll: {
      expandAllOrCollapsedAll: 'Expand All/Collapse All:',
      expandOrCollapsed: 'Expand/Collapse',
      expandAll: 'Expand All',
      collapsedAll: 'Collapse All'
    },
    refreshMenu: 'Refresh menu cache',
    refreshMenuTooltip: 'Now! Update cache refresh browser',
    input: 'Plese Input',
    colorType: {
      default: 'default',
      primary: 'primary',
      tertiary: 'tertiary',
      success: 'success',
      info: 'info',
      warning: 'warning',
      error: 'error'
    },
    today: 'Today',
    yesterday: 'Yesterday',
    week: 'Nearly Week',
    lastWeek: 'Last Week',
    months: 'Nearly Month',
    threeMonths: 'Last three months',
    sixMonths: 'Last six months',
    oneYear: 'Last Year',
    dragFileHere: 'Drag file here, or',
    clickUpload: 'Click to upload',
    upload: 'Upload',
    uploadSuccess: 'Upload Success',
    uploadFailure: 'Upload Failure',
    uploadFile: 'Upload File',
    uploadFileSuccess: 'File uploaded successfully ! ',
    latterOverrideFormer: 'The new file overwrites the old file',
    uploadFileFailure: 'Upload file failed, please upload again!',
    uploadFileConfirm: 'Are you sure to upload the file?',
    uploadFileConfirmMsg: 'After the file is uploaded, the current file is overwritten',
    allowFileImg: 'Only allowed to import jpg, png, gif format files!',
    fileViewer: 'File Viewer',
    job: {
      cronExpressionGenerator: 'Cron expression generator',
      second: 'Second',
      minute: 'Minute',
      hour: 'Hour',
      day: 'Day',
      month: 'Month',
      week: 'Week',
      year: 'Year',
      monday: 'Monday',
      tuesday: 'Tuesday',
      wednesday: 'Wednesday',
      thursday: 'Thursday',
      friday: 'Friday',
      saturday: 'Saturday',
      sunday: 'Sunday',
      preparationForReduction: 'Preparation for reduction',
      last5RunningTimes: 'Last 5 running times',
      inTheCalculationResult: 'in the calculation result',
      unexpectedResult: 'Results that do not meet the conditions!',
      resultIsUniquePre: 'In the last 100 years, there is only ',
      resultIsUniqueSuf: ' result above!',
      timeExpression: 'Time Expression',
      cronExpression: 'Cron Expression',
      secondOne: 'Second, allowed wildcard [, - * /]',
      secondTwoPre: 'Cycle from',
      secondTwoSuf: 'Second',
      secondThreePre: 'From',
      secondThreeMid: 'Seconds start, every',
      secondThreeSuf: 'Execute once per second',
      specify: 'Specify',
      notSpecify: 'Not Specify',
      multipleChoices: 'Multiple Choices',
      minuteOne: 'Minute, allowed wildcard [, - * /]',
      minuteTwoPre: 'Cycle from',
      minuteTwoSuf: 'Minute',
      minuteThreePre: 'From',
      minuteThreeMid: 'Minutes start, every',
      minuteThreeSuf: 'Execute once per minute',
      hourOne: 'Hour, allowed wildcard [, - * /]',
      hourTwoPre: 'Cycle from',
      hourTwoSuf: 'Hour',
      hourThreePre: 'From',
      hourThreeMid: 'Hours start, every',
      hourThreeSuf: 'Execute once per hour',
      dayOne: 'Day, allowed wildcard [, - *? / L W]',
      dayThreePre: 'Cycle from',
      dayThreeSuf: 'Day',
      dayFourPre: 'From',
      dayFourMid: 'Days start, every',
      dayFourSuf: 'Execute once per day',
      dayFivePre: 'A Month',
      dayFiveSuf: 'days The latest working day',
      daySix: 'Last day of the month',
      monthOne: 'Month, allowed wildcard [, - * /]',
      monthTwoPre: 'Cycle from',
      monthTwoSuf: 'Month',
      monthThreePre: 'Cycle from',
      monthThreeMid: 'Months start, every',
      monthThreeSuf: 'Execute once per month',
      weekOne: 'Week, allowed wildcard [, - *? / L #]',
      weekThree: 'Cycle from week',
      weekFourPre: 'No.',
      weekFourSuf: 'Week of the week',
      weekFive: 'Last week of the month',
      yearOne: 'No, allowed wildcard [, - * /]',
      yearTwo: 'Once a year',
      yearThree: 'Cycle from',
      yearFourPre: 'From',
      yearFourMid: 'Years start, every',
      yearFourSuf: 'Execute once per year'
    },
    component: {
      dataRangePicker: {
        placeholder: {
          date: 'Please select a date',
          week: 'Please select a week',
          month: 'Please select a month',
          year: 'Please select a year',
          daterangeStart: 'Please select an start date',
          daterangeEnd: 'Please select an end date',
          monthrangeStart: 'Please select a start month',
          monthrangeEnd: 'Please select a end month',
          datetime: 'Please select a date and time',
          datetimerangeStart: 'Please select an start datetime',
          datetimerangeEnd: 'Please select an end datetime'
        }
      }
    }
  },
  request: {
    logout: 'Logout user after request failed',
    logoutMsg: 'User status is invalid, please log in again',
    logoutWithModal: 'Pop up modal after request failed and then log out user',
    logoutWithModalMsg: 'User status is invalid, please log in again',
    refreshToken: 'The requested token has expired, refresh the token',
    tokenExpired: 'The requested token has expired'
  },
  theme: {
    themeSchema: {
      title: 'Theme Schema',
      light: 'Light',
      dark: 'Dark',
      auto: 'Follow System'
    },
    grayscale: 'Grayscale',
    colourWeakness: 'Colour Weakness',
    layoutMode: {
      title: 'Layout Mode',
      vertical: 'Vertical Menu Mode',
      horizontal: 'Horizontal Menu Mode',
      'vertical-mix': 'Vertical Mix Menu Mode',
      'horizontal-mix': 'Horizontal Mix menu Mode',
      reverseHorizontalMix: 'Reverse first level menus and child level menus position'
    },
    recommendColor: 'Apply Recommended Color Algorithm',
    recommendColorDesc: 'The recommended color algorithm refers to',
    themeColor: {
      title: 'Theme Color',
      primary: 'Primary',
      info: 'Info',
      success: 'Success',
      warning: 'Warning',
      error: 'Error',
      followPrimary: 'Follow Primary'
    },
    scrollMode: {
      title: 'Scroll Mode',
      wrapper: 'Wrapper',
      content: 'Content'
    },
    page: {
      animate: 'Page Animate',
      mode: {
        title: 'Page Animate Mode',
        fade: 'Fade',
        'fade-slide': 'Slide',
        'fade-bottom': 'Fade Zoom',
        'fade-scale': 'Fade Scale',
        'zoom-fade': 'Zoom Fade',
        'zoom-out': 'Zoom Out',
        none: 'None'
      }
    },
    fixedHeaderAndTab: 'Fixed Header And Tab',
    header: {
      height: 'Header Height',
      breadcrumb: {
        visible: 'Breadcrumb Visible',
        showIcon: 'Breadcrumb Icon Visible'
      }
    },
    tab: {
      visible: 'Tab Visible',
      cache: 'Tag Bar Info Cache',
      height: 'Tab Height',
      mode: {
        title: 'Tab Mode',
        chrome: 'Chrome',
        button: 'Button'
      }
    },
    sider: {
      inverted: 'Dark Sider',
      width: 'Sider Width',
      collapsedWidth: 'Sider Collapsed Width',
      mixWidth: 'Mix Sider Width',
      mixCollapsedWidth: 'Mix Sider Collapse Width',
      mixChildMenuWidth: 'Mix Child Menu Width'
    },
    footer: {
      visible: 'Footer Visible',
      fixed: 'Fixed Footer',
      height: 'Footer Height',
      right: 'Right Footer'
    },
    watermark: {
      visible: 'Watermark Full Screen Visible',
      text: 'Watermark Text'
    },
    themeDrawerTitle: 'Theme Configuration',
    pageFunTitle: 'Page Function',
    resetCacheStrategy: {
      title: 'Reset Cache Strategy',
      close: 'Close Page',
      refresh: 'Refresh Page'
    },
    configOperation: {
      copyConfig: 'Copy Config',
      copySuccessMsg: 'Copy Success, Please replace the variable "themeSettings" in "src/theme/settings.ts"',
      resetConfig: 'Reset Config',
      resetSuccessMsg: 'Reset Success'
    }
  },
  route: {
    login: 'Login',
    403: 'No Permission',
    404: 'Page Not Found',
    500: 'Server Error',
    home: 'Home',
    document: 'Document',
    'user-center': 'User Center',
    about: 'About',
    manage: 'System Manage',
    manage_user: 'User Manage',
    'manage_user-detail': 'User Detail',
    manage_role: 'Role Manage',
    manage_menu: 'Menu Manage',
    manage_dept: 'Dept Manage',
    manage_dict: 'Dict Manage',
    exception: 'Exception',
    exception_403: '403',
    exception_404: '404',
    exception_500: '500',
    'iframe-page': 'Iframe',
    document_project: 'Project Document',
    base: 'Base Manage',
    base_sms: 'SMS Manage',
    manage_post: 'Post Manage',
    manage_oauth2: 'OAuth2 Manage',
    manage_oauth2_client: 'OAuth2 Client Manage',
    manage_oauth2_token: 'OAuth2 Token Manage',
    base_file: 'File Manage',
    base_file_config: 'File Config',
    base_file_list: 'File List',
    manage_log: 'Audit Log',
    manage_log_login: 'Login Log',
    manage_log_operate: 'Operate Log',
    base_route: 'Gateway Routing',
    base_xxl: 'Dispatching Center',
    base_xxl_overview: 'Operational Overview',
    base_xxl_executor: 'Executor',
    base_xxl_job: 'Job',
    base_xxl_log: 'Job Log',
    base_datasource: 'Datasource Manage',
    base_sms_channel: 'Sms Channel',
    base_sms_log: 'Sms Log',
    base_sms_template: 'Sms Template',
    manage_area: 'Area Manage',
    manage_notice: 'Notice Manage',
    'my-notice': 'My Notice',
    manage_org: 'Organization Manage'
  },
  page: {
    login: {
      common: {
        loginOrRegister: 'Login / Register',
        userNamePlaceholder: 'Please enter user name',
        phonePlaceholder: 'Please enter phone number',
        codePlaceholder: 'Please enter verification code',
        passwordPlaceholder: 'Please enter password',
        confirmPasswordPlaceholder: 'Please enter password again',
        codeLogin: 'Verification code login',
        confirm: 'Confirm',
        back: 'Back',
        validateSuccess: 'Verification passed',
        loginSuccess: 'Login successfully',
        welcomeBack: 'Welcome back, {userName} !'
      },
      pwdLogin: {
        title: 'Password Login',
        rememberMe: 'Remember me',
        forgetPassword: 'Forget password?',
        register: 'Register',
        otherAccountLogin: 'Other Account Login',
        otherLoginMode: 'Other Login Mode',
        superAdmin: 'Super Admin',
        admin: 'Admin',
        user: 'User'
      },
      codeLogin: {
        title: 'Verification Code Login',
        getCode: 'Get verification code',
        reGetCode: 'Reacquire after {time}s',
        sendCodeSuccess: 'Verification code sent successfully',
        imageCodePlaceholder: 'Please enter image verification code'
      },
      register: {
        title: 'Register',
        agreement: 'I have read and agree to',
        protocol: '《User Agreement》',
        policy: '《Privacy Policy》'
      },
      resetPwd: {
        title: 'Reset Password'
      },
      bindWeChat: {
        title: 'Bind WeChat'
      }
    },
    about: {
      title: 'About',
      introduction: `DD Admin is an open source back-end management project based on Spring Boot 3, Spring Cloud & Alibaba 2023, Vue3, Native UI and other full-stack mainstream technology stacks, involving the development of microservice interface, management front end, etc.`,
      projectInfo: {
        title: 'Project Info',
        version: 'Version',
        latestBuildTime: 'Latest Build Time',
        githubLink: 'Github Link',
        previewLink: 'Preview Link'
      },
      prdDep: 'Production Dependency',
      devDep: 'Development Dependency'
    },
    home: {
      branchDesc: 'This is a continuous maintenance framework, the code is being improved, welcome to join us 。',
      greeting: 'Good morning, {userName}, today is another day full of vitality!',
      weatherDesc: 'Today is cloudy to clear, 20℃ - 25℃!',
      projectCount: 'Project Count',
      todo: 'Todo',
      message: 'Message',
      downloadCount: 'Download Count',
      registerCount: 'Register Count',
      schedule: 'Work and rest Schedule',
      study: 'Study',
      work: 'Work',
      rest: 'Rest',
      entertainment: 'Entertainment',
      visitCount: 'Visit Count',
      turnover: 'Turnover',
      dealCount: 'Deal Count',
      projectNews: {
        title: 'Project News',
        moreNews: 'More News',
        desc1: 'Dimples created the open source project dimples-cloud on May 01, 2024!',
        desc2: 'Dimples submitted a bug to dimples-cloud, the multi-tab bar will not adapt.',
        desc3: 'Dimples is ready to do sufficient preparation for the release of dimples-cloud!',
        desc4: 'Dimples is busy writing project documentation for dimples-cloud!',
        desc5: 'Dimples just wrote some of the workbench pages casually, and it was enough to see!'
      },
      creativity: 'Creativity'
    },
    manage: {
      common: {
        status: {
          enable: 'Enable',
          disable: 'Disable'
        }
      },
      role: {
        title: 'Role List',
        roleName: 'Role Name',
        roleType: 'Role Type',
        roleCode: 'Role Code',
        roleNameOrCode: 'Role Name Or Code',
        roleSort: 'Role Sort',
        roleStatus: 'Role Status',
        roleDesc: 'Role Description',
        createTime: 'Create Time',
        menuAuth: 'Menu Auth',
        dataAuth: 'Data Auth',
        buttonAuth: 'Button Auth',
        form: {
          roleName: 'Please enter role name',
          roleType: 'Please enter role type',
          roleCode: 'Please enter role code',
          roleSort: 'Please enter the display order',
          roleNameOrCode: 'Please enter a role name or role code',
          roleStatus: 'Please select role status',
          roleDesc: 'Please enter role description'
        },
        addRole: 'Add Role',
        editRole: 'Edit Role',
        roleHomePageUpdateSuccess: 'The role home page is updated successfully',
        roleHomePageUpdateFail: 'The role home page is updated unsuccessful'
      },
      user: {
        title: 'User List',
        userName: 'User Name',
        userGender: 'Gender',
        nickName: 'Nick Name',
        deptName: 'Department',
        userPhone: 'Phone Number',
        userEmail: 'Email',
        userPost: 'User Post',
        userRemark: 'Remark',
        userStatus: 'User Status',
        userRole: 'User Role',
        userDefaultRole: 'Default Role',
        confirmUpdateStatusPre: 'Are you sure you want to',
        confirmUpdateStatusSuf: 'users?',
        resetPassword: 'Reset Password',
        confirmResetPassword: 'Are you sure you want to reset your password ?',
        newPassword: 'New Password',
        passwordUpdateSuccess: 'Changed successfully. New password is',
        belongingDept: 'Belonging Dept',
        assignUserRole: 'Assign Role',
        form: {
          userName: 'Please enter user name',
          userGender: 'Please select gender',
          nickName: 'Please enter nick name',
          userPhone: 'Please enter phone number',
          userEmail: 'Please enter email',
          userPost: 'Please select user post',
          userRemark: 'Please enter remarks',
          userStatus: 'Please select user status',
          userRole: 'Please select user role',
          userDefaultRole: 'Please select default role',
          belongingDept: 'Please select a department'
        },
        addUser: 'Add User',
        editUser: 'Edit User',
        gender: {
          male: 'Male',
          female: 'Female',
          unknown: 'Secrecy'
        },
        userPickModal: {
          title: 'User Select',
          dept: 'Dept',
          allEmployee: 'All Users',
          unknownDept: 'Unknown Dept',
          deleteAll: 'Delete All',
          selectedEmployee: 'Selected Users'
        }
      },
      menu: {
        home: 'Home',
        title: 'Menu List',
        id: 'ID',
        parentId: 'Parent ID',
        menuType: 'Menu Type',
        menuName: 'Menu Name',
        routeName: 'Route Name',
        routePath: 'Route Path',
        pathParam: 'Path Param',
        layout: 'Layout Component',
        page: 'Page Component',
        permission: 'Permission Identification',
        i18nKey: 'I18n Key',
        icon: 'Icon',
        localIcon: 'Local Icon',
        iconTypeTitle: 'Icon Type',
        order: 'Order',
        constant: 'Constant',
        constantTooltip:
          'Used to define some basic pages, such as login page /404, routes will not be added to the routing table and will not be cached',
        keepAlive: 'Keep Alive',
        href: 'Href Address',
        hrefOpenType: 'Outer chain open mode',
        hideInMenu: 'Hide In Menu',
        activeMenu: 'Active Menu',
        multiTab: 'Multi Tab',
        fixedIndexInTab: 'Fixed Index In Tab',
        query: 'Query Params',
        button: 'Button',
        buttonCode: 'Button Code',
        buttonDesc: 'Button Desc',
        menuStatus: 'Menu Status',
        form: {
          home: 'Please select home',
          menuType: 'Please select menu type',
          menuName: 'Please enter menu name',
          routeName: 'For example: manage user',
          routeNameTooltip:
            'Routes are separated by underscores (_). For example, if the route name is `manage_user`, the generated path is `/manage/user`, and the generated component path is `@/views/about/index.vue`',
          routePath: 'Please enter route path',
          pathParam: 'Please enter path param',
          page: 'Please select page component',
          layout: 'Please select layout component',
          permission: 'For example: system:menu:create',
          permissionTooltip:
            'Permission characters on the Controller method, such as: @PreAuthorize("@ss.hasPerm(`system:menu:create`)")',
          i18nKey: 'Please enter i18n key',
          i18nKeyTooltip: 'Will be used for I18n, in which case the menu name is ignored',
          icon: 'Please enter iconify name',
          localIcon: 'Please enter local icon name',
          order: 'Please enter order',
          keepAlive: 'Please select whether to cache route',
          keepAliveTooltip: 'When cache is selected, it is cached by `keep-alive`',
          href: 'Please enter href',
          hrefCurrent: 'Internal window opens',
          hrefBlank: 'Browser window opens',
          hideInMenu: 'Please select whether to hide menu',
          hideInMenuTooltip:
            'When hidden is selected, the route will not appear in the sidebar, but will still be accessible',
          activeMenu: 'Please select route name of the highlighted menu',
          multiTab: 'Please select whether to support multiple tabs',
          multiTabTooltip: 'When selected, the menu can be opened repeatedly',
          fixedInTab: 'Please select whether to fix in the tab',
          fixedIndexInTab: 'Please enter the index fixed in the tab',
          queryKey: 'Please enter route parameter Key',
          queryValue: 'Please enter route parameter Value',
          button: 'Please select whether it is a button',
          buttonCode: 'Please enter button code',
          buttonDesc: 'Please enter button description',
          menuStatus: 'Please select menu status'
        },
        addMenu: 'Add Menu',
        editMenu: 'Edit Menu',
        addChildMenu: 'Add Child Menu',
        addChildButton: 'Add Button',
        type: {
          directory: 'Directory',
          menu: 'Menu',
          button: 'Button',
          extlink: 'Ext Link'
        },
        iconType: {
          iconify: 'Iconify Icon',
          local: 'Local Icon'
        },
        refreshMenu: 'Refresh Menu'
      },
      dept: {
        title: 'Dept List',
        name: 'Dept Name',
        parentId: 'Parent Dept',
        sort: 'Sort',
        status: 'Dept Status',
        createTime: 'Create Time',
        leader: 'Leader',
        phone: 'Phone',
        email: 'Email',
        form: {
          name: 'Please enter a department name',
          status: 'Please enter a department status',
          parentId: 'Please select the upper department',
          leader: 'Please enter responsible leader',
          phone: 'Please enter phone number',
          email: 'Please enter email'
        },
        addDept: 'Create Dept',
        editDept: 'Edit Dept'
      },
      org: {
        title: 'Organization List',
        addOrg: 'Create Organization',
        editOrg: 'Edit Organization',
        orgName: 'Organization Name',
        form: {
          orgName: 'Please enter organization name'
        },
      },
      dict: {
        type: {
          title: 'Dict Type List',
          data: 'Dict Data',
          id: 'id',
          name: 'Type Name',
          status: 'Type Status',
          type: 'Dict Type',
          remark: 'Remark',
          createTime: 'Create Time',
          updateTime: 'Update Time',
          form: {
            name: 'Please enter type name',
            status: 'Please select type status',
            type: 'Please enter the dict type code',
            remark: 'Please enter remarks'
          },
          addDictType: 'Add Dict Type',
          editDictType: 'Edit Dict Type'
        },
        id: 'id',
        dictType: 'Dict Type',
        label: 'Dict Label',
        value: 'Dict Value',
        colorType: 'Color Type',
        cssClass: 'CSS Class',
        sort: 'Sort',
        remark: 'Remarks',
        status: 'Status',
        addDict: 'Create Dict',
        editDict: 'Edit Dict',
        form: {
          dictType: 'Please enter the dict type code',
          label: 'Please enter the dict label',
          value: 'Please enter the dict value',
          colorType: 'Please select a color type',
          cssClass: 'Please enter CSS Class',
          sort: 'Please enter dict sort',
          remark: 'Please enter dict remarks'
        },
        refreshDictCache: 'Refresh Dict Cache',
        refreshDictCacheTooltip: 'The dict cache is about to be refreshed ！'
      },
      post: {
        title: 'Post List',
        id: 'Post Id',
        name: 'Post Name',
        code: 'Post Code',
        sort: 'Post Sort',
        status: 'Post Status',
        remark: 'Post Remarks',
        createTime: 'Create Time',
        form: {
          name: 'Please enter the post name',
          code: 'Please enter the post code',
          sort: 'Please enter post sort',
          status: 'Please select post status',
          remark: 'Please enter post remarks'
        },
        addPost: 'Add Post',
        editPost: 'Edit Post'
      },
      oauth2: {
        client: {
          title: 'Client List',
          clientId: 'Client Id',
          clientSecret: 'Client Secret',
          clientName: 'Client Name',
          clientLogo: 'Client Logo',
          status: 'Client Status',
          clientIdIssuedAt: 'Client Create Time',
          clientSecretExpiresAt: 'Client Expire Time',
          authorizationGrantTypes: 'Grant Type',
          clientScope: 'Client Scope',
          redirectUris: 'Redirect Uris',
          clientDescription: 'Client Description',
          accessTokenTimeToLive: 'AccessTokenTime',
          refreshTokenTimeToLive: 'Refresh Token Time',
          form: {
            clientId: 'Please enter the client id',
            clientSecret: 'Please enter the client secret',
            clientName: 'Please enter the client name',
            clientLogo: 'Please enter the client logo',
            status: 'Please select the client status',
            clientDescription: 'Please enter the client description',
            clientSecretExpiresAt: 'Please enter the client expire time',
            authorizationGrantTypes: 'Please select the grant type',
            clientScope: 'Please select the client scope',
            redirectUris: 'Please enter the redirect uris',
            accessTokenTimeToLive: 'Please enter Token validity period (unit s)',
            refreshTokenTimeToLive: 'Please enter Refresh Token validity period (unit s)'
          },
          addClient: 'Add Client',
          editClient: 'Edit Client'
        },
        token: {
          title: 'Token List',
          id: 'Token Id',
          clientId: 'Client Id',
          username: 'Username',
          accessToken: 'Access Token',
          refreshToken: 'Refresh Token',
          accessTokenIssuedAt: 'Access Token Issued Time',
          accessTokenExpiresAt: 'Access Token Expire Time',
          authorizationGrantType: 'Authorization Grant Type',
          forcedRetreat: 'Forced Retreat',
          forcedRetreatWhether: 'Whether to force the user to log out?',
          form: {
            clientId: 'Please enter the client number',
            username: 'Please enter your username',
            authorizationGrantType: 'Please select an authorization type'
          }
        }
      },
      log: {
        login: {
          title: 'Login Log List',
          id: 'Log Id',
          traceId: 'Trace Id',
          logType: 'Log Type',
          username: 'Username',
          userIp: 'Net Address',
          browser: 'Browser',
          os: 'OS',
          loginAddress: 'Login Address',
          loginLocation: 'Login Location',
          createTime: 'Login Time',
          result: 'Login Result',
          form: {
            username: 'Please enter your username',
            userIp: 'Please enter IP address',
            browser: 'Please enter browser information',
            loginAddress: 'Please enter login address',
            createTime: 'Please select login time'
          }
        },
        operate: {
          title: 'Operate Log List',
          id: 'Log Id',
          traceId: 'Trace Id',
          userId: 'User Id',
          nickname: 'Operating Personnel',
          userType: 'User Type',
          applicationName: 'Application Name',
          javaMethod: 'Java Method',
          requestMethod: 'Request Method',
          requestParams: 'Request Params',
          responseBody: 'Response Body',
          requestUrl: 'Request Url',
          userInfo: 'User Info',
          userIp: 'IP Address',
          userAgent: 'Browser',
          operateModule: 'Operate Module',
          operateName: 'Operate Name',
          operateType: 'Operate Type',
          beginTime: 'Request Time',
          endTime: 'End Time',
          duration: 'Duration(ms)',
          resultCode: 'Result Code',
          resultMsg: 'Result Msg',
          createTime: 'Create Time',
          form: {
            userId: 'Please enter the user number',
            userType: 'Please select the user type',
            applicationName: 'Please enter the application name',
            beginTime: 'Please select the start time',
            duration: 'Please enter the execution time',
            resultCode: 'Please enter the result code',
            operateType: 'Please select the operate type'
          }
        }
      },
      area: {
        title: 'Area List',
        id: 'ID',
        name: 'Area Name',
        ipSearch: 'IP Search',
        ipAddress: 'IP Address',
        ipCheckFail: 'IP check fail, In the form of: xxx.xxx.xx.xx or xx.xx.xx.xx,vv.vv.vv.v',
        form: {
          name: 'Please select the area name',
          ipSearch: 'Please enter the query IP address. Separate multiple IP addresses with commas (,)',
          ipAddress: 'The IP query result is displayed'
        }
      },
      notice: {
        title: 'Notify List',
        add: 'Add Notify Template',
        edit: 'Edit Notify Template',
        noticeTitle: 'Title',
        content: 'Notice Content',
        type: 'Notice Type',
        level: 'Notice Level',
        publisherId: 'Publisher Id',
        publisherName: 'Publisher Name',
        priority: 'Priority',
        targetType: 'Notice Target Type',
        targetTypeAll: 'All',
        targetTypeUser: 'Users',
        targetUserIds: 'Target UserIds',
        appointUser: 'Appoint Users',
        publishStatus: 'Publish Status',
        publishStatusUnPublished: 'UnPublished',
        publishStatusPublished: 'Published',
        publishStatusRevoked: 'Revoked',
        operaTime: 'Operation Time',
        publishTime: 'Publish Time',
        revokeTime: 'Revoke Time',
        createTime: 'Create Time',
        publish: 'Publish',
        publishAffirm: 'Whether to issue the notice?',
        publishSuccess: 'Publish Success',
        revoke: 'Revoke',
        revokeAffirm: 'Whether to withdraw the notice?',
        revokeSuccess: 'Revoke Success',
        readStatus: 'Read Status',
        isRead: 'Is Read',
        unRead: 'UnRead',
        form: {
          noticeTitle: 'Please enter the notice title',
          content: 'Please enter the notice content',
          type: 'Please select the notice type',
          level: 'Please select the level',
          publisherId: 'Please enter the publisher id',
          publisherName: 'Please enter the publisher name',
          priority: 'Please select the priority',
          targetType: 'Please select the target type',
          targetUserIds: 'Please enter the target user ids',
          appointUser: 'Please select the appoint users',
          publishStatus: 'Please select the publish status',
          readStatus: 'Please select the read status',
          publishTime: 'Please select the publish time',
          revokeTime: 'Please select the revoke time',
          createTime: 'Please select the create time'
        },
        myNotice: {
          title: "My Notice"
        }
      }
    },
    base: {
      file: {
        config: {
          addFileConfig: 'Add File Config',
          editFileConfig: 'Edit File Config',
          id: 'ID',
          test: 'Test',
          master: 'Master',
          masterSwitch: 'Master Switch',
          masterSwitchPrefix: 'Do you want to change the data item whose configuration id is【',
          masterSwitchSuffix: '】as the primary configuration item?',
          name: 'Name',
          storage: 'Storage',
          config: 'Config',
          remark: 'Remark',
          createTime: 'Create Time',
          basePath: 'Base Path',
          host: 'Host',
          port: 'Port',
          username: 'Username',
          password: 'Password',
          mode: 'Mode',
          modeActive: 'Active Mode',
          modePassive: 'Passive Mode',
          endpoint: 'Endpoint',
          bucket: 'Bucket',
          accessKey: 'Access Key',
          accessSecret: 'Access Secret',
          domain: 'Domain',
          testUploadSuccess: 'Test Upload Success',
          testAccessFile: 'Do you want to access the file ?',
          form: {
            name: 'Please enter a name',
            storage: 'Please enter a storage name',
            config: 'Please enter a storage config',
            remark: 'Please enter a remark',
            master: 'Please select a master config',
            createTime: 'Please enter create time',
            basePath: 'Please enter a base path',
            host: 'Please enter a host',
            port: 'Please enter a port',
            username: 'Please enter a username',
            password: 'Please enter a password',
            mode: 'Please select a mode',
            modeActive: 'Active Mode',
            modePassive: 'Passive Mode',
            endpoint: 'Please enter an endpoint',
            bucket: 'Please enter a bucket',
            accessKey: 'Please enter an access key',
            accessSecret: 'Please enter an access secret',
            domain: 'Please enter a domain'
          }
        },
        list: {
          title: 'File List',
          uoloadFile: 'Upload File',
          id: 'ID',
          name: 'NAME',
          size: 'SIZE',
          type: 'TYPE',
          content: 'CONTENT',
          path: 'PATH',
          url: 'URL',
          createTime: 'Upload Time',
          form: {
            name: 'Please enter a file name',
            path: 'Please enter a file path',
            type: 'Please enter a file type',
            createTime: 'Please enter upload time',
            uploadFile: 'Please upload file'
          }
        }
      },
      route: {
        title: 'Route List',
        addGatewayRoute: 'Add Gateway Route',
        editGatewayRoute: 'Edit Gateway Route',
        routerId: 'Route Id',
        name: 'Route Name',
        uri: 'Route Uri',
        status: 'Route Status',
        predicates: 'Routing Condition',
        addPredicates: 'Add Routing Condition',
        filters: 'Filter',
        addFilters: 'Add Filter',
        addParams: 'Add Params',
        form: {
          routerId: 'Please enter the route id',
          name: 'Please enter the route name',
          uri: 'Please enter the route uri',
          predicates: 'Please enter routing conditions',
          filters: 'Please enter filter'
        },
        headerName: 'Header Name',
        paramValue: 'Param Value',
        paramName: 'Param Name'
      },
      xxl: {
        overview: {
          title: 'Xxl-Job Operational Overview',
          executorCount: 'Executor',
          executorDesc: 'Executor Count',
          scheduledTasksCount: 'Scheduled Tasks',
          scheduledTasksDesc: 'Scheduled Tasks Count',
          scheduledTotalCount: 'Scheduled Total',
          scheduledTotalDesc: 'Scheduled Total Count',
          scheduledFailCount: 'Scheduled Fail',
          scheduledFailDesc: 'Scheduled Fail Count',
          scheduleSituation: 'Scheduling Situation',
          success: 'Scheduling Success',
          failed: 'Scheduling Failure',
          running: 'Running'
        },
        executor: {
          title: 'Executor List',
          addExecutor: 'Add Executor',
          editExecutor: 'Edit Executor',
          id: 'Executor ID',
          appname: 'AppName',
          executorTitle: 'Executor Name',
          addressType: 'Logon Mode',
          addressList: 'Address List',
          updateTime: 'Update Time',
          registryList: 'Registry Nodes',
          check: 'Check',
          status: 'Nodes Status',
          statusAllNormal: 'All Nodes Normal',
          statusAllException: 'All Nodes Exception',
          statusPartialAnomaly: 'Partial Nodes Abnormal',
          form: {
            appname: 'Please enter AppName',
            executorTitle: 'Please enter executor name',
            addressList: 'Please enter the actuator address list. Multiple addresses are separated by commas'
          }
        },
        job: {
          title: 'Job List',
          addJob: 'Add Job',
          editJob: 'Edit Job',
          id: 'Job ID',
          jobGroup: 'Executor',
          jobDesc: 'Job Desc',
          addTime: 'Add Time',
          updateTime: 'Update Time',
          author: 'Author',
          alarmEmail: 'Alarm Email',
          scheduleType: 'Schedule Type',
          scheduleConf: 'Cron',
          misfireStrategy: 'Misfire Strategy',
          executorRouteStrategy: 'Executor Route Strategy',
          executorMode: 'Operation Mode',
          executorHandler: 'Job Handler',
          executorParam: 'Executor Param',
          executorAddressList: 'Machine Address',
          executorBlockStrategy: 'Blocking Handling Strategy',
          executorTimeout: 'Job Timeout',
          executorFailRetryCount: 'Executor Fail Retry Count',
          glueType: 'GLUE Type',
          glueSource: 'GLUE Source',
          glueRemark: 'GLUE Remark',
          glueUpdatetime: 'GLUE Update Time',
          childJobId: 'Child JobId',
          triggerStatus: 'Trigger Status',
          triggerLastTime: 'Tigger Last Time',
          triggerNextTime: 'Trigger Next Time',
          all: 'All',
          stop: 'STOP',
          running: 'RUNNING',
          scheduleTypeNone: 'None',
          scheduleTypeCron: 'Cron',
          triggerFrequency: 'Trigger Frequency',
          scheduleTypeFixRate: 'Fix Rate',
          jobconfRouteFirst: 'First',
          jobconfRouteLast: 'Last',
          jobconfRouteRound: 'Round',
          jobconfRouteRandom: 'Random',
          jobconfRouteConsistentHash: 'Consistent Hash',
          jobconfRouteLfu: 'Least Frequently Used',
          jobconfRouteLru: 'Least Recently Used',
          jobconfRouteFailover: 'Failover',
          jobconfRouteBusyover: 'Busy Over',
          jobconfRouteShard: 'Sharding Broadcast',
          misfireStrategyDoNothing: 'Do Nothing',
          misfireStrategyFireOnceNow: 'Fire Once Now',
          blockStrategySerialExecutor: 'Serial Execution',
          blockStrategyDiscardLater: 'Discard Later',
          blockStrategyCoverEarly: 'Cover Early',
          generatedExpression: 'Generated Expression',
          basicConfiguration: 'Basic Configuration',
          schedulingConfiguration: 'Scheduling Configuration',
          jobConfiguration: 'Job Configuration',
          advancedConfiguration: 'Advanced Configuration',
          executeOnce: 'Execute Once',
          executeOnceSuccess: 'Execute Success',
          startSuccess: 'Start Success',
          logView: 'Log View',
          registeredNode: 'Registered Node',
          nextExecutionTime: 'Next Execution Time',
          jobStart: 'Start',
          jobStop: 'Stop',
          jobStartAffirm: 'Are you sure to start the job?',
          jobStopAffirm: 'Are you sure to stop the job?',
          jobCopy: 'Copy',
          form: {
            jobGroup: 'Please select executor',
            jobDesc: 'Please enter job desc',
            author: 'Please enter author',
            alarmEmail: 'Please enter alarm email, multiple emails are separated by commas',
            scheduleType: 'Please select schedule type',
            scheduleConf: 'Cron expression...',
            scheduleTypeFixRate: 'Please enter ( Second )',
            misfireStrategy: 'Please select misfire strategy',
            executorRouteStrategy: 'Please select executor route strategy',
            executorHandler: 'Please enter JobHandler',
            executorMode: 'Please select operation mode',
            executorParam: 'Please enter executor param',
            executorAddressList:
              'Please select the address of the machine for the current execution. If it is empty, obtain the address from the actuator',
            executorBlockStrategy: 'Please select executor block strategy',
            executorTimeout: 'PThe timeout period (unit: second) takes effect when the value is greater than zero',
            executorFailRetryCount: 'The value takes effect when the number of failed retries is greater than zero',
            glueType: 'Please select GLUE type',
            glueSource: 'Please enter GLUE source',
            glueRemark: 'Please enter GLUE remark',
            glueRemarkDefaultValue: 'GLUE Code Initialization',
            childJobId:
              'Please enter the task ids of the subtasks. If there are multiple task ids, separate them with commas',
            triggerStatus: 'Please select trigger status',
            triggerLastTime: 'Last trigger time',
            triggerNextTime: 'Next trigger time'
          }
        },
        log: {
          title: 'Job Log List',
          id: 'Log ID',
          jobGroup: 'Job Group',
          jobId: 'Job Id',
          jobDetail: 'Job Detail',
          triggerTime: 'Trigger Time',
          triggerCode: 'Trigger Result',
          triggerMsg: '	Trigger Message',
          triggerLog: '	Trigger Log',
          handleTime: 'Handle Time',
          handleCode: '	Handle Result',
          handleMsg: '	Handle Message',
          handleLog: '	Handle Result',
          job: 'Job',
          jobStatus: 'Status',
          all: 'All',
          success: 'Success',
          fail: 'Fail',
          running: 'Running',
          executorAddress: 'Executor Address',
          executorHandler: 'JobHandler',
          jobDesc: 'Job Desc',
          executorParam: 'Executor Param',
          executorLog: 'Executor Log',
          killJob: 'Termination Job',
          killJobAffirm: 'Are you sure about terminating the task?',
          killJobSuccess: 'Abort mission successful!',
          joblogRollingLogTriggerFail: 'Task scheduling fails, and execution logs cannot be viewed',
          joblogRollingLogFailOften:
            'The request for Rolling log is terminated. The number of failed requests exceeds the upper limit. You can reopen the popup window to reload the log',
          form: {
            jobGroup: 'Please select executor',
            job: 'Please select or enter a job',
            jobStatus: 'Please select job status',
            handleTime: 'Please select handle time'
          }
        }
      },
      datasource: {
        title: 'Datasource List',
        add: 'Add Datasource',
        edit: 'Edit Datasource',
        name: 'Name',
        code: 'Code',
        remark: 'Remark',
        dbType: 'Type',
        dbDriver: 'Driver',
        dbUrl: 'Url',
        dbName: 'Db Name',
        dbUsername: 'Username',
        dbPassword: 'Password',
        createTime: 'Create',
        testConnection: 'Test Connection',
        testConnectionSuccess: 'Test Connection Success',
        testConnectionFail: 'Test Connection Fail',
        form: {
          name: 'Please enter datasource name',
          dbType: 'Please select datasource type',
          code: 'Please enter datasource code',
          remark: 'Please enter remark',
          dbDriver: 'Please enter datasource driver',
          dbUrl: 'Please enter datasource url',
          dbName: 'Please enter database name',
          dbUsername: 'Please enter a username',
          dbPassword: 'Please enter a password'
        }
      },
      sms: {
        channel: {
          title: 'Sms Channel List',
          add: 'Add Channel',
          edit: 'Edit Channel',
          id: 'ID',
          signature: 'Signature',
          code: 'Code',
          status: 'Status',
          remark: 'Remark',
          apiKey: 'Api Key',
          apiSecret: 'Api Secret',
          callbackUrl: 'Callback Url',
          createTime: 'CreateTime',
          form: {
            signature: 'Please enter signature',
            code: 'Please select code',
            status: 'Please select status',
            remark: 'Please enter remark',
            apiKey: 'Please enter api key',
            apiSecret: 'Please enter api secret',
            callbackUrl: 'Please enter callback url'
          }
        },
        template: {
          title: 'Sms Template List',
          sendTitle: 'Send Sms Test',
          add: 'Add Template',
          edit: 'Edit Template',
          id: 'ID',
          type: 'Type',
          status: 'Status',
          code: 'Code',
          name: 'Name',
          content: 'Content',
          contparamsent: 'Content Param',
          remark: 'Remark',
          apiTemplateId: 'Api Template Id',
          channel: 'Channel',
          channelId: 'Channel Id',
          channelCode: 'Channel Code',
          createTime: 'Create Time',
          mobile: 'Mobile',
          paramsText: 'Param',
          sendSmsSuccess: 'Submit and send successfully! Send the result, see send log number: ',
          form: {
            type: 'Please select type',
            status: 'Please select status',
            code: 'Please enter template code',
            name: 'Please enter template name',
            content: 'Please enter template content',
            contparamsent: 'Please enter template content param',
            remark: 'Please enter remark',
            apiTemplateId: 'Please enter api template id',
            channel: 'Please select channel',
            channelId: 'Please select channel id',
            channelCode: 'Please select channel code',
            mobile: 'Please enter mobile',
            paramNotNull: 'Not Null',
            pleaseEnter: 'Please enter'
          }
        },
        log: {
          title: 'Sms Log List',
          id: 'ID',
          channel: 'Channel',
          channelId: 'Channel Id',
          channelCode: 'Channel Code',
          template: 'Template',
          templateId: 'Template Id',
          templateCode: 'Template Code',
          templateType: 'Template Type',
          templateContent: 'Sms Content',
          templateParams: 'Sms Param',
          apiTemplateId: 'Api Template Id',
          userInfo: 'User Info',
          mobile: 'Mobile',
          userId: 'User Id',
          userType: 'User Type',
          sendStatus: 'Send Status',
          sendTime: 'Send Time',
          apiSendCode: 'Api Send Code',
          apiSendMsg: 'Api Send Message',
          apiRequestId: 'Api Request Id',
          apiSerialNo: 'API Sms No',
          receiveStatus: 'Receive Status',
          receiveTime: 'Receive Time',
          apiReceiveCode: 'Api Receive Code',
          apiReceiveMsg: 'Api Receive Message',
          createTime: 'Create Time',
          form: {
            mobile: 'Please enter your mobile',
            channelId: 'Please select an sms channel',
            templateId: 'Please enter the template id',
            sendStatus: 'Please select send status',
            receiveStatus: 'Please select receive status'
          }
        }
      }
    }
  },
  form: {
    required: 'Cannot be empty',
    userName: {
      required: 'Please enter user name',
      invalid: 'User name format is incorrect'
    },
    phone: {
      required: 'Please enter phone number',
      invalid: 'Phone number format is incorrect'
    },
    pwd: {
      required: 'Please enter password',
      invalid: '6-18 characters, including letters, numbers, and underscores'
    },
    confirmPwd: {
      required: 'Please enter password again',
      invalid: 'The two passwords are inconsistent'
    },
    code: {
      required: 'Please enter verification code',
      invalid: 'Verification code format is incorrect'
    },
    email: {
      required: 'Please enter email',
      invalid: 'Email format is incorrect'
    }
  },
  dropdown: {
    closeCurrent: 'Close Current',
    closeOther: 'Close Other',
    closeLeft: 'Close Left',
    closeRight: 'Close Right',
    closeAll: 'Close All'
  },
  icon: {
    themeConfig: 'Theme Configuration',
    themeSchema: 'Theme Schema',
    lang: 'Switch Language',
    fullscreen: 'Fullscreen',
    fullscreenExit: 'Exit Fullscreen',
    reload: 'Reload Page',
    collapse: 'Collapse Menu',
    expand: 'Expand Menu',
    pin: 'Pin',
    unpin: 'Unpin'
  },
  datatable: {
    itemCount: 'Total {total} items'
  },
  header: {
    notice: {
      notice: 'Notice',
      noNotice: 'No notice',
      message: 'Message',
      noMessage: 'No Message',
      backlog: 'Backlog',
      noBacklog: 'No Backlog',
      readMore: 'Read More',
      readAll: 'Read All',
    }
  }
};

export default local;
